<?php

/*
 * Nailton
 * Classe para gerenciar conexões com o banco de dados
 */

final class TConnection {

    private function __construct() {
        
    }

    /*
     * 
     * recebe o nome do banco de dados e instancia o objeto PDO correspondente
     */

    public static function open($name) {
        //print "<br>Entrei no construtor do bd </br>";
        //print "<br>Recebi arquivo $name </br>";
        //verifica se existe arquivo de configuração para este banco de dados
        if (file_exists("../app.config/{$name}.ini")) {
            //print "<br>Entrei aqui em 9 </br>";
            // retorna um array
            $db = parse_ini_file("../app.config/{$name}.ini");
            //print"<br>".$db."</br>";
            //print "<br>Entrei aqui em 10</br>";
        } elseif (file_exists("app.config/{$name}.ini")) {
            //print "<br>Entrei no ifelse </br>";
            $db = parse_ini_file("app.config/{$name}.ini");
        } else {
            //print "<br>Entrei no else </br>";
        }
        // lendo o arquivos
        $user = isset($db['user']) ? $db['user'] : NULL;
        $pass = isset($db['pass']) ? $db['pass'] : NULL;
        $name = isset($db['name']) ? $db['name'] : NULL;
        $host = isset($db['host']) ? $db['host'] : NULL;
        $type = isset($db['type']) ? $db['type'] : NULL;
        $port = isset($db['port']) ? $db['port'] : NULL;

        // descobre qual o tipo de banco de dados a ser utilizado
        switch ($type) {
            case 'pgsql':
                $port = $port ? $port : '5432';
                $conn = new PDO("pgsql:dbname={$name}; user={$user}; password={$pass};
                        host=$host;port={$port}");
                break;
            case 'mysql':
                //print "<br>Entrei aqui em 11</br>";
                if (isset($_SESSION['name'])) {
                    $port = $port ? $port : '3306';
                    $conn = new PDO("mysql:host={$_SESSION['host']};port={$port};dbname={$_SESSION['name']}", $_SESSION['usuario'], $_SESSION['senha'],
                                    array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'utf8\''));
                    //print "<br>SESSÃO ATIVA {$_SESSION['usuario']}</br>";
                } else {
                    
                    $port = $port ? $port : '3306';
                    $conn = new PDO("mysql:host={$host};port={$port};dbname={$name}", $user, $pass,
                                    array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'utf8\''));
                    //print "<br>SESSÃO INATIVA</br>";
                }

                //print "<br>Entrei aqui em 12</br>";
                break;
        }
        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        return $conn;
    }

}

?>
